class Person {
    private String name;
    private int age;
    // 属性初始化
    private String hobby = "唱跳rap篮球";

    // 1、不写构造方法会有一个默认的无参构造方法
    // 没有在构造方法中初始化字段时，引用类型的字段默认是null，数值类型的字段用默认值，int类型默认值是0，布尔类型默认值是false：
    public Person() {
    }

    // 2、一旦定义了构造方法，默认的无参构造方法就不存在了: 需要手动定义
    public Person(String name, int age, String hobby) {
        this.name = name;
        this.age = age;
        this.hobby = hobby;
    }

    public void printfInfo() {
        System.out.println("name is " + name + ", age is " + age + ", hobby is " + hobby);
    }
}

public class Test {
    public static void main(String[] args) {
        // 此处根据参数不同调用不同的构造方法
        Person p = new Person();
        p.printfInfo();
        Person p2 = new Person("Alice", 30, "吃饭睡觉打豆豆");
        p2.printfInfo();
    }
}